﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MotionControl;
using WHW_NetUtility;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
using System.IO;
using HalconDotNet;
using Newtonsoft.Json;
using System.Text.RegularExpressions;
using XXTUserUI;

namespace MainFrame
{
    public partial class GlobalMotion
    {
        /// <summary>
        /// MES
        /// </summary>
        public static void Task_MesTcp()
        {
            try
            {
                while (!GlobalVar.isExit)
                {
                    if (GlobalVar.mesTcp != null && GlobalVar.mesTcp.msgList != null)
                    {
                        if (GlobalVar.mesTcp.msgList.Count > 0)
                        {
                            string curMsg = "";
                            lock (GlobalVar.mesTcp.lockMsg)
                            {
                                curMsg = GlobalVar.mesTcp.msgList[0];
                                GlobalVar.mesTcp.msgList.RemoveAt(0);
                            }
                            if (curMsg.Contains("|ChangeModel|"))
                            {
                                var IsChangeOK = false;
                                if (curMsg.StartsWith($"@{GlobalVar.userConfig.UploadInfo.url_DeviceName}"))
                                {
                                    var resHead = $"@{GlobalVar.userConfig.UploadInfo.url_DeviceName}|ChangeModel|";
                                    var str_Model = curMsg.Replace(resHead, "");
                                    var arr_model = str_Model.Split('|');
                                    if (arr_model.Length == 2)
                                    {
                                        if (GlobalVar.tv_list != null && GlobalVar.tv_list.Count > 0)
                                        {
                                            var tList = GlobalVar.tv_list.Where(a => a.type == arr_model[0] && a.Version == arr_model[1]).ToList();
                                            if (tList != null && tList.Count > 0)
                                            {
                                                var str_type = tList[0].type + "~" + tList[0].Version;
                                                IsChangeOK = GlobalVar.ChangeModel(str_type) == 1;
                                            }
                                        }

                                    }
                                    if (IsChangeOK)
                                        GlobalVar.mesTcp.sendMsg(resHead + "OK");
                                    else
                                        GlobalVar.mesTcp.sendMsg(resHead + "NG");
                                }
                            }
                            else if (GlobalVar.userConfig.cmdList.Count > 0)
                            {

                                var curCmd = GlobalVar.userConfig.cmdList.Where(a => a.cmd == curMsg).FirstOrDefault();

                                if (curCmd != null)
                                {
                                    var resDevo = curMsg.Substring(1, curMsg.IndexOf("|") - 1);
                                    var rescmd = curMsg.Replace(resDevo, GlobalVar.userConfig.UploadInfo.url_DeviceName) + "|";
                                    ///启动  暂停  复位  停止  急停
                                    switch (curCmd.action)
                                    {
                                        case "启动":
                                            {
                                                var tempcmd = rescmd;
                                                Task.Run(new Action(() =>
                                                {
                                                    GlobalVar.btn_Start?.Invoke("启动");
                                                    if (GlobalVar.isAutoRun)
                                                    {
                                                        tempcmd += "OK";
                                                    }
                                                    else
                                                    {
                                                        tempcmd += "NG";
                                                    }
                                                    if (tempcmd.EndsWith("|OK") || tempcmd.EndsWith("|NG"))
                                                    {
                                                        GlobalVar.mesTcp.sendMsg(tempcmd);
                                                    }
                                                }));
                                            }
                                            break;
                                        case "暂停":
                                            {
                                                GlobalVar.isPause = true;
                                                if (GlobalVar.isPause && GlobalVar.isAutoRun)
                                                {
                                                    rescmd += "OK";
                                                }
                                                else
                                                {
                                                    rescmd += "NG";
                                                }
                                                if (rescmd.EndsWith("|OK") || rescmd.EndsWith("|NG"))
                                                {
                                                    GlobalVar.mesTcp.sendMsg(rescmd);
                                                }
                                                GlobalVar.curStatus = e_Status.暂停中;
                                            }
                                            break;
                                        case "复位":
                                            {
                                                var tempcmd = rescmd;
                                                Task.Run(new Action(() =>
                                                {
                                                    {
                                                        GlobalVar.IsTcpReset = true;
                                                        if (GlobalVar.IsMesEstop)//若是MES触发的急停  可以自动取消急停
                                                        {
                                                            GlobalVar.IsMesEstop = false;
                                                            GlobalVar.isEstop = false;

                                                        }
                                                        GlobalVar.btn_Home?.Invoke("复位");
                                                        if (GlobalVar.isAllHome)
                                                        {
                                                            tempcmd += "OK";
                                                        }
                                                        else
                                                            tempcmd += "NG";
                                                        if (tempcmd.EndsWith("|OK") || tempcmd.EndsWith("|NG"))
                                                        {
                                                            GlobalVar.mesTcp.sendMsg(tempcmd);
                                                        }
                                                    }
                                                }));
                                            }
                                            break;
                                        case "停止":
                                            {
                                                GlobalVar.IsEndWork = true;
                                                var tempcmd = rescmd;
                                                Task.Run(new Action(() =>
                                                {
                                                    var sw = new Stopwatch();
                                                    sw.Restart();
                                                    while (GlobalVar.isAutoRun)
                                                    {
                                                        Thread.Sleep(10);
                                                        Application.DoEvents();
                                                        if (sw.ElapsedMilliseconds > 30000)
                                                            break;
                                                    }
                                                    if (!GlobalVar.isAutoRun)
                                                    {
                                                        tempcmd += "OK";
                                                    }
                                                    else
                                                    {
                                                        tempcmd += "NG";
                                                    }
                                                    if (!GlobalVar.isAutoRun)
                                                        GlobalVar.curStatus = e_Status.停止中;
                                                    if (tempcmd.EndsWith("|OK") || tempcmd.EndsWith("|NG"))
                                                    {
                                                        GlobalVar.mesTcp.sendMsg(tempcmd);
                                                    }
                                                }));
                                            }
                                            break;
                                        case "急停":
                                            {
                                                GlobalMotion.MachineState(e_MachineStatus.异常急停, "MesTcp急停");
                                                if (GlobalVar.isEstop)
                                                    rescmd += "OK";
                                                else
                                                    rescmd += "NG";
                                                GlobalVar.mesTcp.sendMsg(rescmd);
                                                Task.Run(() =>
                                                {
                                                    Thread.Sleep(1000);
                                                    GlobalVar.IsMesEstop = true;
                                                });
                                            }
                                            break;
                                        default:
                                            break;
                                    }

                                }
                            }
                        }

                    }
                }
            }
            catch (Exception ex)
            {

            }
        }
        /// <summary>
        /// MES
        /// </summary>
        //public static void Task_MesUrl()
        //{
        //    try
        //    {
        //        Stopwatch tempSw = new Stopwatch();
        //        while (!GlobalVar.isExit)
        //        {
        //            tempSw.Restart();
        //            Thread.Sleep(5000);//0.5秒刷新一下界面
        //            if (GlobalVar.userConfig.UploadInfo.IsUploadUrl)
        //            {
        //                if (!string.IsNullOrEmpty(GlobalVar.userConfig.UploadInfo.url_DevStatusHead))
        //                {
        //                    if (GlobalVar.isAutoRun && !GlobalVar.isPause)
        //                    {
        //                        if (GlobalMotion.IsProccessPro)
        //                            UploadInterface.upload_DevStatusHead(e_Status.正常生产中);
        //                        else
        //                            UploadInterface.upload_DevStatusHead(e_Status.正常待机中);
        //                    }
        //                    else
        //                    {
        //                        if (GlobalVar.curStatus != e_Status.未知)
        //                        {
        //                            UploadInterface.upload_DevStatusHead(GlobalVar.curStatus);
        //                        }
        //                        else
        //                        {
        //                            if (GlobalVar.isAutoRun && GlobalVar.isPause)
        //                                UploadInterface.upload_DevStatusHead(e_Status.暂停中);
        //                            else if (GlobalVar.isEstop)
        //                                UploadInterface.upload_DevStatusHead(e_Status.故障暂停或停止中);
        //                            else
        //                            {
        //                                if (GlobalVar.isReseting)
        //                                    UploadInterface.upload_DevStatusHead(e_Status.设备复位中);
        //                                else
        //                                {
        //                                    if (GlobalVar.isAllHome)
        //                                        UploadInterface.upload_DevStatusHead(e_Status.停止中);
        //                                    else
        //                                        UploadInterface.upload_DevStatusHead(e_Status.设备未复位);
        //                                }
        //                            }
        //                        }
        //                    }
        //                }
        //            }
        //            if (GlobalVar.isExit)
        //            {
        //                break;
        //            }

        //        }
        //    }
        //    catch (System.Exception ex)
        //    {
        //        Log4Helper.WriteLog("LightDisplay", ex);
        //    }
        //}
        /// <summary>
        /// mes实时http
        /// </summary>
        public static void Task_MesUrl()
        {
            e_Status e_Status1 = new e_Status();
            try
            {
                Stopwatch tempSw = new Stopwatch();
                while (true)
                {
                    tempSw.Restart();
                    Thread.Sleep(5000);//0.5秒刷新一下界面
                    if (GlobalVar.userConfig.UploadInfo.IsUploadUrl)
                    {
                        if (!string.IsNullOrEmpty(GlobalVar.userConfig.UploadInfo.url_DevStatusHead))
                        {
                            if (GlobalVar.isAutoRun && !GlobalVar.isPause)
                            {
                                if (GlobalMotion.IsProccessPro)
                                {
                                    e_Status1 = e_Status.正常生产中;
                                }
                                else
                                {
                                    e_Status1 = e_Status.正常待机中;
                                }
                            }
                            else
                            {
                                if (GlobalVar.curStatus != e_Status.未知)
                                {
                                    e_Status1 = GlobalVar.curStatus;
                                }
                                else
                                {
                                    if (GlobalVar.isAutoRun && GlobalVar.isPause)
                                    {
                                        e_Status1 = e_Status.暂停中;
                                    }
                                    else if (GlobalVar.isEstop)
                                    {
                                        e_Status1 = e_Status.故障暂停或停止中;
                                    }
                                    else
                                    {
                                        if (GlobalVar.isReseting)
                                        {
                                            e_Status1 = e_Status.设备复位中;
                                        }
                                        else
                                        {
                                            if (GlobalVar.isAllHome)
                                            {
                                                e_Status1 = e_Status.停止中;
                                            }
                                            else
                                            {
                                                e_Status1 = e_Status.设备未复位;
                                            }
                                        }
                                    }
                                }

                            }
                        }

                        UploadInterface.upload_DevStatusHead(e_Status1, (GlobalVar.closeSave.NGCount + GlobalVar.closeSave.OKCount), GlobalVar.closeSave.NGCount, Convert.ToDouble((decimal)GlobalVar.sw_CT.ElapsedMilliseconds / (decimal)1000.0));
                    }
                    if (GlobalVar.isExit)
                    {
                        break;
                    }

                }
            }
            catch (System.Exception ex)
            {
                Log4Helper.WriteLog("LightDisplay", ex);
            }
        }
        /// <summary>
        /// 人工过站
        /// </summary>
        public static void Task_ConverMan()
        {
            try
            {
                var nstop = -1;
                string logFlow = e_ConveryMan.ToString();
                var sw_man = new Stopwatch();
                sw_man.Restart();
                bool isFirst = true;
                while (!GlobalVar.isExit)
                {

                    Thread.Sleep(8);
                    if (!GlobalVar.isEstop)
                    {
                        if (GlobalVar.isAutoRun && GlobalVar.IsManThrought)
                        {
                            bool IshavePro3 = !GlobalMotion.Input_CardEx2[(int)e_input_extCard2.上输送产品检测3];
                            bool IshavePro4 = !GlobalMotion.Input_CardEx2[(int)e_input_extCard2.上输送产品检测4];

                            switch (e_ConveryMan)
                            {
                                case e_Flow_ConveryUp.等待人工站到达:
                                    if (GlobalVar.isMan_Start)
                                    {
                                        var e_CurPlate = e_platePro.双平台无;
                                        GlobalVar.isMan_Start = false;
                                        if (IshavePro3 || IshavePro4)
                                        {
                                            if (IshavePro3 && IshavePro4)
                                            {
                                                e_CurPlate = e_platePro.双平台有;
                                            }
                                            else if (IshavePro3 && !IshavePro4)
                                            {
                                                e_CurPlate = e_platePro.平台1;
                                            }
                                            else if (!IshavePro3 && IshavePro4)
                                            {
                                                e_CurPlate = e_platePro.平台2;
                                            }
                                        }
                                        var RFIDinfo = GlobalVar.userConfig.RFIDBox;
                                        #region 老RFID
                                        //if (!RFIDinfo.IsEnableRFID)
                                        //{
                                        //    var BoxInfo = GlobalVar.motionConfig.boxReadInfo;
                                        //    if (BoxInfo.IsEnable)
                                        //    {
                                        //        if (e_CurPlate == e_platePro.双平台有)
                                        //        {
                                        //            var isSuccess1 = true;
                                        //            var isSuccess2 = true;
                                        //            var pro1 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress1, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK, BoxInfo.nTimes);
                                        //            var pro2 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress2, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK, BoxInfo.nTimes);
                                        //            for (int nr = 0; nr < BoxInfo.nTimes; nr++)
                                        //            {
                                        //                if (!string.IsNullOrEmpty(pro1) && pro1.Length >= (BoxInfo.minLength))
                                        //                {
                                        //                    isSuccess1 = checkString(pro1, BoxInfo) == 1;
                                        //                    if (isSuccess1)
                                        //                        break;
                                        //                    else
                                        //                    {
                                        //                        displalyInfo.displayInfoMain($"读卡器1内容不合预期:{pro1}第{nr}次");
                                        //                        pro1 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress1, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //                    }
                                        //                }
                                        //                else
                                        //                {
                                        //                    displalyInfo.displayInfoMain($"读卡器1内容不合预期:{pro1}第{nr}次");
                                        //                    pro1 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress1, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //                }
                                        //            }
                                        //            for (int nr = 0; nr < BoxInfo.nTimes; nr++)
                                        //            {
                                        //                if (!string.IsNullOrEmpty(pro2) && pro2.Length >= (BoxInfo.minLength))
                                        //                {
                                        //                    isSuccess2 = checkString(pro2, BoxInfo) == 1;
                                        //                    if (isSuccess2)
                                        //                        break;
                                        //                    else
                                        //                    {
                                        //                        displalyInfo.displayInfoMain($"读卡器2内容不合预期:{pro2}第{nr}次");
                                        //                        pro2 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress2, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //                    }
                                        //                }
                                        //                else
                                        //                {
                                        //                    displalyInfo.displayInfoMain($"读卡器2内容不合预期:{pro2}第{nr}次");
                                        //                    pro2 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress2, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //                }
                                        //            }
                                        //            var IsPro1OK = !string.IsNullOrEmpty(pro1) && pro1.Length >= (BoxInfo.minLength) && !pro1.Contains(BoxInfo.NGflag);
                                        //            var IsPro2OK = !string.IsNullOrEmpty(pro2) && pro2.Length >= (BoxInfo.minLength) && !pro2.Contains(BoxInfo.NGflag);
                                        //            if (IsPro1OK || IsPro2OK)
                                        //            {
                                        //                displalyInfo.displayInfoMain($"读卡器1:{pro1} 读卡器2:{pro2}");
                                        //                if (!string.IsNullOrEmpty(pro1) && pro1.Length >= (BoxInfo.minLength) && !pro1.Contains(BoxInfo.NGflag))
                                        //                {
                                        //                    GlobalVar.Label_pros.ForEach(a =>
                                        //                    {
                                        //                        if (a.ProNo == 1)
                                        //                        {
                                        //                            a.ProId = pro1;
                                        //                            if (!isSuccess1)
                                        //                            {
                                        //                                a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                                a.Result_Cut = e_Result.撕膜NG.ToString();
                                        //                                a.Result_Label = e_Result.贴膜NG.ToString();
                                        //                            }
                                        //                            else
                                        //                            {
                                        //                                a.Result_Cut = e_Result.撕膜OK.ToString();
                                        //                                a.Result_Label = e_Result.贴膜OK.ToString();
                                        //                            }
                                        //                        }
                                        //                    });

                                        //                }
                                        //                else
                                        //                {
                                        //                    GlobalVar.Label_pros.ForEach(a =>
                                        //                    {
                                        //                        if (a.ProNo == 1)
                                        //                        {
                                        //                            a.ProId = pro1;
                                        //                            a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                        }
                                        //                    });
                                        //                }
                                        //                if (!string.IsNullOrEmpty(pro2) && pro2.Length >= (BoxInfo.minLength) && !pro2.Contains(BoxInfo.NGflag))
                                        //                {
                                        //                    GlobalVar.Label_pros.ForEach(a =>
                                        //                    {
                                        //                        if (a.ProNo == 2)
                                        //                        {
                                        //                            a.ProId = pro2;
                                        //                            if (!isSuccess2)
                                        //                            {
                                        //                                a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                                a.Result_Cut = e_Result.撕膜NG.ToString();
                                        //                                a.Result_Label = e_Result.贴膜NG.ToString();
                                        //                            }
                                        //                            else
                                        //                            {
                                        //                                a.Result_Cut = e_Result.撕膜OK.ToString();
                                        //                                a.Result_Label = e_Result.贴膜OK.ToString();
                                        //                            }
                                        //                        }
                                        //                    });
                                        //                }
                                        //                else
                                        //                {
                                        //                    GlobalVar.Label_pros.ForEach(a =>
                                        //                    {
                                        //                        if (a.ProNo == 2)
                                        //                        {
                                        //                            a.ProId = pro2;
                                        //                            a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                        }
                                        //                    });
                                        //                }


                                        //            }
                                        //            else
                                        //            {
                                        //                displalyInfo.displayInfoMain($"读卡器1内容不合预期:{pro1} 读卡器2内容不合预期:{pro2}");
                                        //                GlobalVar.Label_pros.ForEach(a =>
                                        //                {
                                        //                    if (a.ProNo == 1)
                                        //                    {
                                        //                        a.ProId = pro1;
                                        //                        a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                    }
                                        //                    if (a.ProNo == 2)
                                        //                    {
                                        //                        a.ProId = pro2;
                                        //                        a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                    }
                                        //                }
                                        //                );
                                        //            }
                                        //            if (GlobalVar.userConfig.UploadInfo.IsUploadUrl)
                                        //            {
                                        //                if (!string.IsNullOrEmpty(GlobalVar.userConfig.UploadInfo.url_CheckUpload))
                                        //                {
                                        //                    UploadInterface.upload_CheckUpload(pro1);
                                        //                    UploadInterface.upload_CheckUpload(pro2);
                                        //                }
                                        //            }
                                        //        }
                                        //        else if (e_CurPlate == e_platePro.平台1)
                                        //        {
                                        //            var isSuccess1 = true;

                                        //            var pro1 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress1, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //            for (int nr = 0; nr < BoxInfo.nTimes; nr++)
                                        //            {
                                        //                if (!string.IsNullOrEmpty(pro1) && pro1.Length >= (BoxInfo.minLength))
                                        //                {
                                        //                    isSuccess1 = checkString(pro1, BoxInfo) == 1;
                                        //                    if (isSuccess1)
                                        //                        break;
                                        //                    else
                                        //                    {
                                        //                        displalyInfo.displayInfoMain($"读卡器1内容不合预期:{pro1}第{nr}次");
                                        //                        pro1 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress1, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //                    }
                                        //                }
                                        //                else
                                        //                {
                                        //                    displalyInfo.displayInfoMain($"读卡器1内容不合预期:{pro1}第{nr}次");
                                        //                    pro1 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress1, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //                }
                                        //            }
                                        //            if (!string.IsNullOrEmpty(pro1) && pro1.Length >= (BoxInfo.minLength) && !pro1.Contains(BoxInfo.NGflag))
                                        //            {
                                        //                displalyInfo.displayInfoMain($"读卡器1内容:{pro1}");
                                        //                GlobalVar.Label_pros.ForEach(a =>
                                        //                {
                                        //                    if (a.ProNo == 1)
                                        //                    {
                                        //                        a.ProId = pro1;
                                        //                        if (!isSuccess1)
                                        //                        {
                                        //                            a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                            a.Result_Cut = e_Result.撕膜NG.ToString();
                                        //                            a.Result_Label = e_Result.贴膜NG.ToString();
                                        //                        }
                                        //                        else
                                        //                        {
                                        //                            a.Result_Cut = e_Result.撕膜OK.ToString();
                                        //                            a.Result_Label = e_Result.贴膜OK.ToString();
                                        //                        }
                                        //                    }
                                        //                });


                                        //            }
                                        //            else
                                        //            {
                                        //                displalyInfo.displayInfoMain($"读卡器1内容不合预期:{pro1}");

                                        //                GlobalVar.Label_pros.ForEach(a =>
                                        //                {
                                        //                    if (a.ProNo == 1)
                                        //                    {
                                        //                        a.ProId = pro1;
                                        //                        a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                    }
                                        //                }
                                        //                );
                                        //            }
                                        //            if (GlobalVar.userConfig.UploadInfo.IsUploadUrl)
                                        //            {
                                        //                if (!string.IsNullOrEmpty(GlobalVar.userConfig.UploadInfo.url_CheckUpload))
                                        //                {
                                        //                    UploadInterface.upload_CheckUpload(pro1);

                                        //                }
                                        //            }
                                        //        }
                                        //        else if (e_CurPlate == e_platePro.平台2)
                                        //        {
                                        //            var isSuccess2 = true;
                                        //            var pro2 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress2, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //            for (int nr = 0; nr < BoxInfo.nTimes; nr++)
                                        //            {
                                        //                if (!string.IsNullOrEmpty(pro2) && pro2.Length >= (BoxInfo.minLength))
                                        //                {
                                        //                    isSuccess2 = checkString(pro2, BoxInfo) == 1;
                                        //                    if (isSuccess2)
                                        //                        break;
                                        //                    else
                                        //                    {
                                        //                        displalyInfo.displayInfoMain($"读卡器2内容不合预期:{pro2}第{nr}次");
                                        //                        pro2 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress2, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //                    }
                                        //                }
                                        //                else
                                        //                {
                                        //                    displalyInfo.displayInfoMain($"读卡器2内容不合预期:{pro2}第{nr}次");
                                        //                    pro2 = GlobalVar.Box2.ReadBoxString(BoxInfo.StartAddress2, BoxInfo.dataLength, BoxInfo.station, BoxInfo.IsReadWriteOK);
                                        //                }
                                        //            }

                                        //            if (!string.IsNullOrEmpty(pro2) && pro2.Length >= (BoxInfo.minLength) && !pro2.Contains(BoxInfo.NGflag))
                                        //            {
                                        //                displalyInfo.displayInfoMain($"读卡器1内容:{pro2}");
                                        //                GlobalVar.Label_pros.ForEach(a =>
                                        //                {
                                        //                    if (a.ProNo == 2)
                                        //                    {
                                        //                        a.ProId = pro2;
                                        //                        if (!isSuccess2)
                                        //                        {
                                        //                            a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                            a.Result_Cut = e_Result.撕膜NG.ToString();
                                        //                            a.Result_Label = e_Result.贴膜NG.ToString();
                                        //                        }
                                        //                        else
                                        //                        {
                                        //                            a.Result_Cut = e_Result.撕膜OK.ToString();
                                        //                            a.Result_Label = e_Result.贴膜OK.ToString();
                                        //                        }
                                        //                    }
                                        //                });

                                        //            }
                                        //            else
                                        //            {
                                        //                displalyInfo.displayInfoMain($" 读卡器2内容不合预期:{pro2}");
                                        //                GlobalVar.Label_pros.ForEach(a =>
                                        //                {
                                        //                    if (a.ProNo == 2)
                                        //                    {
                                        //                        a.ProId = pro2;
                                        //                        a.Result_up = e_Result.进料读卡NG.ToString();
                                        //                    }
                                        //                }
                                        //                );

                                        //            }
                                        //            if (GlobalVar.userConfig.UploadInfo.IsUploadUrl)
                                        //            {
                                        //                if (!string.IsNullOrEmpty(GlobalVar.userConfig.UploadInfo.url_CheckUpload))
                                        //                {
                                        //                    UploadInterface.upload_CheckUpload(pro2);
                                        //                }
                                        //            }
                                        //        }
                                        //    }
                                        //}else
                                        #endregion
                                        {
                                            if (RFIDinfo.IsEnable)
                                            {
                                                if (e_CurPlate == e_platePro.双平台有)
                                                {
                                                    var resRFID = GlobalVar.RFIDBox_out.ReadRFID(RFIDinfo.station, GlobalVar.motionConfig.rfid_mode);
                                                    var pro1 = "";
                                                    var pro2 = "";
                                                    bool IsProOK1 = false;
                                                    bool IsProOK2 = false;
                                                    if (resRFID != null && resRFID.arr_Rfid != null && resRFID.arr_Rfid.Length == 2)
                                                    {
                                                        pro1 = resRFID.arr_Rfid[(int)e_RFIDPlate.产品1];
                                                        pro2 = resRFID.arr_Rfid[(int)e_RFIDPlate.产品2];
                                                        if (resRFID.Check_state != null && resRFID.Check_state.Length == 2)
                                                        {
                                                            IsProOK1 = resRFID.Check_state[(int)e_RFIDPlate.产品1];
                                                            IsProOK2 = resRFID.Check_state[(int)e_RFIDPlate.产品2];
                                                        }

                                                    }
                                                    for (int nr = 0; nr < RFIDinfo.nReadTimes; nr++)
                                                    {
                                                        if (!string.IsNullOrEmpty(pro1))
                                                            break;
                                                        else
                                                        {
                                                            displalyInfo.displayInfoMain($"出料读卡器产品1不合预期:{pro1}第{nr}次");
                                                            resRFID = GlobalVar.RFIDBox_out.ReadRFID(RFIDinfo.station, GlobalVar.motionConfig.rfid_mode);
                                                            if (resRFID != null && resRFID.arr_Rfid != null && resRFID.arr_Rfid.Length == 2)
                                                            {
                                                                pro1 = resRFID.arr_Rfid[(int)e_RFIDPlate.产品1];
                                                                if (resRFID.Check_state != null && resRFID.Check_state.Length == 2)
                                                                    IsProOK1 = resRFID.Check_state[(int)e_RFIDPlate.产品1];
                                                            }
                                                        }
                                                    }
                                                    for (int nr = 0; nr < RFIDinfo.nReadTimes; nr++)
                                                    {
                                                        if (!string.IsNullOrEmpty(pro2))
                                                            break;
                                                        else
                                                        {
                                                            displalyInfo.displayInfoMain($"出料读卡器产品2不合预期:{pro2}第{nr}次");
                                                            resRFID = GlobalVar.RFIDBox_out.ReadRFID(RFIDinfo.station, GlobalVar.motionConfig.rfid_mode);
                                                            if (resRFID != null && resRFID.arr_Rfid != null && resRFID.arr_Rfid.Length == 2)
                                                            {
                                                                pro2 = resRFID.arr_Rfid[(int)e_RFIDPlate.产品2];
                                                                if (resRFID.Check_state != null && resRFID.Check_state.Length == 2)
                                                                    IsProOK2 = resRFID.Check_state[(int)e_RFIDPlate.产品2];
                                                            }
                                                        }
                                                    }
                                                    if (IsProOK1 && IsProOK2)
                                                    {
                                                        var msg_Rfid = $"出料读卡器1:{pro1} 出料读卡器2:{pro2}";
                                                        var resRfid = GlobalVar.RFIDBox_out.ReadRFID_Clear(new string[] { pro1, pro2 });
                                                        if (resRfid != null && resRfid.isClear)
                                                        {
                                                            GlobalVar.IsEndWork = true;
                                                            msg_Rfid += "结束作业";
                                                        }
                                                        displalyInfo.displayInfoMain(msg_Rfid);
                                                    }
                                                    else if (IsProOK1)
                                                    {
                                                        var msg_Rfid = $"出料读卡器1:{pro1} ";
                                                        var resRfid = GlobalVar.RFIDBox_out.ReadRFID_Clear(new string[] { pro1, pro1 });
                                                        if (resRfid != null && resRfid.isClear)
                                                        {
                                                            GlobalVar.IsEndWork = true;
                                                            msg_Rfid += "结束作业";
                                                        }
                                                        displalyInfo.displayInfoMain(msg_Rfid);
                                                    }
                                                    else if (IsProOK2)
                                                    {
                                                        var msg_Rfid = $"出料读卡器2:{pro2} ";
                                                        var resRfid = GlobalVar.RFIDBox_out.ReadRFID_Clear(new string[] { pro2, pro2 });
                                                        if (resRfid != null && resRfid.isClear)
                                                        {
                                                            GlobalVar.IsEndWork = true;
                                                            msg_Rfid += "结束作业";
                                                        }
                                                        displalyInfo.displayInfoMain(msg_Rfid);
                                                    }
                                                    var IsPro1OK = !string.IsNullOrEmpty(pro1) && !pro1.Contains(RFIDinfo.NGflag) && IsProOK1;
                                                    var IsPro2OK = !string.IsNullOrEmpty(pro2) && !pro2.Contains(RFIDinfo.NGflag) && IsProOK2;

                                                    displalyInfo.displayInfoMain($"读卡器1:{pro1} 读卡器2:{pro2}");
                                                    GlobalVar.Label_pros.ForEach(a =>
                                                    {
                                                        if (a.ProNo == 1)
                                                        {
                                                            a.ProId = pro1;
                                                            if (!IsPro1OK)
                                                            {
                                                                a.Result_up = e_Result.进料读卡NG.ToString();
                                                                a.Result_Cut = e_Result.撕膜NG.ToString();
                                                                a.Result_Label = e_Result.贴膜NG.ToString();
                                                            }
                                                            else
                                                            {
                                                                a.Result_Cut = e_Result.撕膜OK.ToString();
                                                                a.Result_Label = e_Result.贴膜OK.ToString();
                                                            }
                                                        }
                                                        if (a.ProNo == 2)
                                                        {
                                                            a.ProId = pro2;
                                                            if (!IsPro2OK)
                                                            {
                                                                a.Result_up = e_Result.进料读卡NG.ToString();
                                                                a.Result_Cut = e_Result.撕膜NG.ToString();
                                                                a.Result_Label = e_Result.贴膜NG.ToString();
                                                            }
                                                            else
                                                            {
                                                                a.Result_Cut = e_Result.撕膜OK.ToString();
                                                                a.Result_Label = e_Result.贴膜OK.ToString();
                                                            }
                                                        }
                                                    });
                                                    if (GlobalVar.userConfig.UploadInfo.IsUploadUrl)
                                                    {
                                                        if (!string.IsNullOrEmpty(GlobalVar.userConfig.UploadInfo.url_CheckUpload))
                                                        {
                                                            UploadInterface.upload_CheckUpload(pro1);
                                                            UploadInterface.upload_CheckUpload(pro2);
                                                        }
                                                    }
                                                }
                                                else if (e_CurPlate == e_platePro.平台1)
                                                {
                                                    var resRFID = GlobalVar.RFIDBox_out.ReadRFID(RFIDinfo.station, GlobalVar.motionConfig.rfid_mode);
                                                    var pro1 = "";
                                                    bool IsProOK1 = false;

                                                    if (resRFID != null && resRFID.arr_Rfid != null && resRFID.arr_Rfid.Length == 2)
                                                    {
                                                        pro1 = resRFID.arr_Rfid[(int)e_RFIDPlate.产品1];
                                                        if (resRFID.Check_state != null && resRFID.Check_state.Length == 2)
                                                            IsProOK1 = resRFID.Check_state[(int)e_RFIDPlate.产品1];

                                                    }
                                                    for (int nr = 0; nr < RFIDinfo.nReadTimes; nr++)
                                                    {
                                                        if (!string.IsNullOrEmpty(pro1))
                                                            break;
                                                        else
                                                        {
                                                            displalyInfo.displayInfoMain($"出料读卡器产品1不合预期:{pro1}第{nr}次");
                                                            resRFID = GlobalVar.RFIDBox_out.ReadRFID(RFIDinfo.station, GlobalVar.motionConfig.rfid_mode);
                                                            if (resRFID != null && resRFID.arr_Rfid != null && resRFID.arr_Rfid.Length == 2)
                                                            {
                                                                pro1 = resRFID.arr_Rfid[(int)e_RFIDPlate.产品1];
                                                                if (resRFID.Check_state != null && resRFID.Check_state.Length == 2)
                                                                    IsProOK1 = resRFID.Check_state[(int)e_RFIDPlate.产品1];

                                                            }
                                                        }
                                                    }
                                                    if (IsProOK1)
                                                    {
                                                        var msg_Rfid = $"出料读卡器1:{pro1} ";
                                                        var resRfid = GlobalVar.RFIDBox_out.ReadRFID_Clear(new string[] { pro1, pro1 });
                                                        if (resRfid != null && resRfid.isClear)
                                                        {
                                                            GlobalVar.IsEndWork = true;
                                                            msg_Rfid += "结束作业";
                                                        }
                                                        displalyInfo.displayInfoMain(msg_Rfid);
                                                    }
                                                    var IsPro1OK = !string.IsNullOrEmpty(pro1) && !pro1.Contains(RFIDinfo.NGflag) && IsProOK1;
                                                    displalyInfo.displayInfoMain($"出料读卡器产品1:{pro1}");
                                                    GlobalVar.Label_pros.ForEach(a =>
                                                    {
                                                        if (a.ProNo == 1)
                                                        {
                                                            a.ProId = pro1;
                                                            if (!IsPro1OK)
                                                            {
                                                                a.Result_up = e_Result.进料读卡NG.ToString();
                                                                a.Result_Cut = e_Result.撕膜NG.ToString();
                                                                a.Result_Label = e_Result.贴膜NG.ToString();
                                                            }
                                                            else
                                                            {
                                                                a.Result_Cut = e_Result.撕膜OK.ToString();
                                                                a.Result_Label = e_Result.贴膜OK.ToString();
                                                            }
                                                        }

                                                    });
                                                    if (GlobalVar.userConfig.UploadInfo.IsUploadUrl)
                                                    {
                                                        if (!string.IsNullOrEmpty(GlobalVar.userConfig.UploadInfo.url_CheckUpload))
                                                        {
                                                            UploadInterface.upload_CheckUpload(pro1);

                                                        }
                                                    }
                                                }
                                                else if (e_CurPlate == e_platePro.平台2)
                                                {
                                                    var resRFID = GlobalVar.RFIDBox_out.ReadRFID(RFIDinfo.station, GlobalVar.motionConfig.rfid_mode);
                                                    var pro2 = "";

                                                    bool IsProOK2 = false;
                                                    if (resRFID != null && resRFID.arr_Rfid != null && resRFID.arr_Rfid.Length == 2)
                                                    {
                                                        pro2 = resRFID.arr_Rfid[(int)e_RFIDPlate.产品2];
                                                        if (resRFID.Check_state != null && resRFID.Check_state.Length == 2)
                                                            IsProOK2 = resRFID.Check_state[(int)e_RFIDPlate.产品2];
                                                    }
                                                    for (int nr = 0; nr < RFIDinfo.nReadTimes; nr++)
                                                    {
                                                        if (!string.IsNullOrEmpty(pro2))
                                                            break;
                                                        else
                                                        {
                                                            displalyInfo.displayInfoMain($"出料读卡器产品2不合预期:{pro2}第{nr}次");
                                                            resRFID = GlobalVar.RFIDBox_out.ReadRFID(RFIDinfo.station, GlobalVar.motionConfig.rfid_mode);
                                                            if (resRFID != null && resRFID.arr_Rfid != null && resRFID.arr_Rfid.Length == 2)
                                                            {
                                                                pro2 = resRFID.arr_Rfid[(int)e_RFIDPlate.产品2];
                                                                if (resRFID.Check_state != null && resRFID.Check_state.Length == 2)
                                                                    IsProOK2 = resRFID.Check_state[(int)e_RFIDPlate.产品2];
                                                            }
                                                        }
                                                    }
                                                    if (IsProOK2)
                                                    {
                                                        var msg_Rfid = $"出料读卡器2:{pro2} ";
                                                        var resRfid = GlobalVar.RFIDBox_out.ReadRFID_Clear(new string[] { pro2, pro2 });
                                                        if (resRfid != null && resRfid.isClear)
                                                        {
                                                            GlobalVar.IsEndWork = true;
                                                            msg_Rfid += "结束作业";
                                                        }
                                                        displalyInfo.displayInfoMain(msg_Rfid);
                                                    }
                                                    var IsPro2OK = !string.IsNullOrEmpty(pro2) && !pro2.Contains(RFIDinfo.NGflag) && IsProOK2;
                                                    displalyInfo.displayInfoMain($"出料读卡器产品2:{pro2}");
                                                    GlobalVar.Label_pros.ForEach(a =>
                                                    {
                                                        if (a.ProNo == 2)
                                                        {
                                                            a.ProId = pro2;
                                                            if (!IsPro2OK)
                                                            {
                                                                a.Result_up = e_Result.进料读卡NG.ToString();
                                                                a.Result_Cut = e_Result.撕膜NG.ToString();
                                                                a.Result_Label = e_Result.贴膜NG.ToString();
                                                            }
                                                            else
                                                            {
                                                                a.Result_Cut = e_Result.撕膜OK.ToString();
                                                                a.Result_Label = e_Result.贴膜OK.ToString();
                                                            }
                                                        }
                                                    });
                                                    if (GlobalVar.userConfig.UploadInfo.IsUploadUrl)
                                                    {
                                                        if (!string.IsNullOrEmpty(GlobalVar.userConfig.UploadInfo.url_CheckUpload))
                                                        {
                                                            UploadInterface.upload_CheckUpload(pro2);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        e_ConveryMan = e_Flow_ConveryUp.等待人工站处理完成;
                                        sw_man.Restart();
                                    }
                                    break;
                                case e_Flow_ConveryUp.等待人工站处理完成:
                                    {
                                        if (GlobalVar.IsManFinishSignal || GlobalVar.IsThrought)
                                        {
                                            GlobalVar.IsManFinishSignal = false;
                                            e_ConveryMan = e_Flow_ConveryUp.人工站写入信息并放行;
                                        }
                                        else
                                        {
                                            if (GlobalMotion.Input_Card1[(int)e_input_card1.人工过站])
                                            {
                                                GlobalVar.IsManFinishSignal = false;
                                                e_ConveryMan = e_Flow_ConveryUp.人工站写入信息并放行;
                                            }
                                            else if (sw_man.ElapsedMilliseconds > 10000)
                                            {
                                                sw_man.Restart();
                                                displalyInfo.displayInfoMain("等待人工过站完成信号");
                                            }
                                        }
                                    }
                                    break;
                                case e_Flow_ConveryUp.人工站写入信息并放行:
                                    {
                                        GlobalVar.isManFinish = true;
                                        e_ConveryMan = e_Flow_ConveryUp.等待人工站到达;
                                    }
                                    break;
                            }
                            if (logFlow != e_ConveryMan.ToString())
                            {
                                logFlow = e_ConveryMan.ToString();
                                displalyInfo.displayInfoMain(logFlow);
                            }
                        }

                    }
                }
            }
            catch (Exception ex)
            {
                displalyInfo.displayInfoMain("Task_CarrierConvery" + ex.Message);
            }
        }





    }
}
